/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Vector;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import model.Grupo;
import util.Conexao;

/**
 *
 * @author Ewerton
 */
public class GrupoDAO extends GenericDao<Grupo> {
    
    Conexao c = new Conexao();
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("Controle_de_EstoquePU");
    EntityManager manager = factory.createEntityManager();

    public void salvar (Grupo grupo){
        gravar(grupo);
    }

    public void alterar (Grupo grupo){
        alterar(grupo);
    }

    public void excluir (Grupo grupo){
        Grupo g = listar(grupo);
        remover(g);
    }

    public Grupo listar (Grupo grupo){
        return getEntityManager().find(Grupo.class, grupo.getIdGrupo());
    }

    public int PegaUltimoRegistro() {
        Query query = manager.createQuery("SELECT max(g.idGrupo) FROM Grupo g");
        Integer codigo = (Integer)query.getSingleResult();
        if(codigo == null){
            return 1;
        }else{
            return codigo + 1;
        }
    }
    
    public Grupo buscarPorDescricao(String nome){
        Query query = manager.createQuery("SELECT g FROM Grupo g WHERE g.descricao = '"+nome+"'");
        Grupo g = (Grupo) query.getSingleResult();
        if(g == null){
            JOptionPane.showMessageDialog(null, "Grupo não encontrado");
            return null;
        }
        else{
            return g;
        }
    }
    
    public Vector<Grupo> listaTodos() {
      c.conecta();
      Vector<Grupo> resultados = new Vector<Grupo>();
      try {
         c.executeSQL("SELECT * FROM grupo ORDER BY descricao");
         while (c.resultset.next()) {
            Grupo temp = new Grupo();
            temp.setDescricao(c.resultset.getString("DESCRICAO"));
            resultados.add(temp);
         }
         return resultados;
      } catch (SQLException e) {
         System.out.println(e);
         return null;
      }
   }
    
}
